package com.xie.leetcode.array;

//349. 两个数组的交集
//        给定两个数组，编写一个函数来计算它们的交集。
//
//
//
//        示例 1：
//
//        输入：nums1 = [1,2,2,1], nums2 = [2,2]
//        输出：[2]
//        示例 2：
//
//        输入：nums1 = [4,9,5], nums2 = [9,4,9,8,4]
//        输出：[9,4]
//
//
//        说明：
//
//        输出结果中的每个元素一定是唯一的。
//        我们可以不考虑输出结果的顺序。

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

/**
 * @author xiezhendong
 * @date 2021/11/29
 */
public class Intersection {

    public static void main(String[] args) {
        Intersection intersection = new Intersection();
        System.out.println(Arrays.toString(intersection.intersection(new int[]{1, 2, 2, 1}, new int[]{2, 2})));
        System.out.println(Arrays.toString(intersection.intersection(new int[]{4, 9, 5}, new int[]{9, 4, 9, 8, 4})));
    }

    public int[] intersection(int[] nums1, int[] nums2) {
        Set<Integer> num1Set = new HashSet();
        for (int i : nums1) {
            num1Set.add(i);
        }
        Set<Integer> num2Set = new HashSet();
        for (int i : nums2) {
            num2Set.add(i);
        }

        Set<Integer> num3Set = new HashSet();

        for (Integer o : num1Set) {
            if (num2Set.contains(o)) {
                num3Set.add(o);
            }
        }
        for (Integer o : num2Set) {
            if (num1Set.contains(o)) {
                num3Set.add(o);
            }
        }

        int[] nums3 = new int[num3Set.size()];
        int num = 0;
        for (int i : num3Set) {
            nums3[num] = i;
            num++;
        }

        return nums3;
    }
}
